# 人工智能NLP-Agent数字人项目-04-基金数据问答任务工单V1.1-2025.2.17
import abc
import sqlite3
from typing import Any
from langchain.tools import BaseTool


class QueryTimerDB(BaseTool, abc.ABC):
    name = "QueryTimerDB"
    description = "用于查询所有日程，返回的数据里包含3个参数：时间、循环规则（如：'1000100'代表星期一和星期五循环，'0000000'代表不循环）、执行的事项"

    def __init__(self):
        super().__init__()

    async def _arun(self, *args: Any, **kwargs: Any) -> Any:
        # 用例中没有用到 arun 不予具体实现
        pass

    def _run(self, para: Any) -> str:
        # 连接到 SQLite 数据库
        conn = sqlite3.connect('timer.db')
        cursor = conn.cursor()

        try:
            # 执行查询
            cursor.execute("SELECT * FROM timer")
            rows = cursor.fetchall()

            # 如果查询结果为空，返回提示信息
            if not rows:
                return "未找到任何日程记录。"

            # 格式化查询结果
            result = "\n".join([f"时间: {row[0]}, 循环规则: {row[1]}, 事项: {row[2]}" for row in rows])
        except sqlite3.Error as e:
            # 捕获并处理数据库异常
            result = f"查询失败，错误信息：{e}"
        finally:
            # 关闭数据库连接
            conn.close()

        return result


if __name__ == "__main__":
    tool = QueryTimerDB()
    result = tool.run("")
    print(result)
